package edu.nwpu.dao;

import edu.nwpu.pojo.Order;
import org.apache.ibatis.annotations.Param;
import java.util.List;

public interface OrderMapper {

    /**
     * 根据订单Id查询订单（已经删除的订单也能查询）
     *
     * @param orderId: 订单Id
     *
     * @return edu.nwpu.pojo.Order
     */
    Order selectOrderByOrderId(@Param("id") Long orderId);

    /**
     * 返回一个用户未删除（状态码大于0）的订单
     *
     * @param userId: 用户Id
     *
     * @return java.util.List<edu.nwpu.pojo.Order> 用户未删除的订单
     */
    List<Order> selectOrdersByUserId(@Param("userId") Long userId);

    /**
     * 插入新的订单(不插入总额)
     * 包括recvInfo.id, orderTime, statusCode, userId
     *
     * @param order: 订单
     *
     * @return java.lang.Long
     */
    Long insertOrder(Order order);

    /**
     * 更新指定Id订单的amount
     *
     * @param orderId: 订单Id
     * @param amount: 订单总额
     *
     * @return int
     */
    int updateAmountByOrderId(@Param("id") Long orderId, @Param("amount") Double amount);

    /**
     * 更新订单的状态码
     *
     * @param orderId: 订单Id
     * @param statusCode: 新状态码
     *
     * @return int
     */
    int updateStatusCodeByOrderId(@Param("id") Long orderId, @Param("statusCode") Integer statusCode);

    @Deprecated
    List<Order> selectAllOrders();

    @Deprecated
    int updateOrder(Order order);

    @Deprecated
    int deleteOrder(@Param("id") Long id);
}
